﻿using MinecraftEnchantCalculator.Core;
using MinecraftEnchantCalculator.Data.Entity;

namespace MinecraftEnchantCalculator.Models;

/// <summary>
///   可附魔物品类，继承自抽象附魔类<see cref="AbstractEnchant" />
///   用于表示可进行附魔的实体物品（如工具、 armor 等），实现了物品特有的实例创建逻辑
/// </summary>
public class EnchantItem : AbstractEnchant
{
  /// <summary>
  ///   物品实体信息，包含物品的基础属性（如物品代码、名称、图标等）
  /// </summary>
  public Item ItemEntity { get; init; } = null!;

  /// <summary>
  ///   附魔物品的价值
  ///   此处设置为最大整数值，通常用于在合并排序中优先处理物品（相较于附魔书）
  /// </summary>
  public override int Value => int.MaxValue;

  /// <summary>
  ///   创建附魔物品实例（工厂方法）
  ///   用于在合并操作时生成新的附魔物品对象，保持原物品实体信息不变
  /// </summary>
  /// <returns>新的附魔物品实例，与原实例共享相同的物品实体信息</returns>
  protected override AbstractEnchant CreateInstance()
  {
    return new EnchantItem { ItemEntity = ItemEntity };
  }
}